package com.itheima.service.impl;

import com.itheima.service.Sourceable;

/**
 * @author ：yuan_he_song
 * @description: 装饰类
 * 装饰模式就是给一个对象增加一些新的功能，而且是动态的，
 * 要求装饰对象和被装饰对象实现同一个接口
 * 装饰对象持有被装饰对象的实例
 */
public class Decorator implements Sourceable {

    /**
     * 持有被装饰者对象的实例
     */
    private Source source;

    public Decorator(Source source){
        this.source = source;
    }

    @Override
    public void method() {
        System.out.println("before original method...");
        source.method();
        System.out.println("after original method...");
    }

    public static void main(String[] args) {
        Source source = new Source();
        Decorator decorator = new Decorator(source);
        decorator.method();
    }
}
